package com.gpframework.module.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gpframework.module.system.domain.SmsSendLog;
import com.gpframework.module.system.domain.vo.SmsSendLogVo;
import com.gpframework.module.system.mapper.SmsSendLogMapper;
import com.gpframework.module.system.service.ISmsSendLogService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * gpframework
 * ==================================================================
 * CopyRight © 2017-2099 广州宏略信息科技有限公司
 * 官网地址：http://www.greatplan.com.cn
 * <p>
 * ------------------------------------------------------------------
 * 这不是一个自由软件！未经本公司授权您只能在不用于商业目的的前提下
 * 对本程序代码进行修改和使用；不允许对本程序代码以任何目的的再发布。
 * ==================================================================
 *
 * @ClassName SmsSendLog
 * @Author gpframework
 * @Date 2020-12-29
 * @Version 1.0.0
 * @Description 短信发送记录Service业务层处理
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class SmsSendLogServiceImpl extends ServiceImpl<SmsSendLogMapper, SmsSendLog> implements ISmsSendLogService {

    /**
     * @Description 查询列表返回VO 用于返回给前端的列表接口
     * @Author gpframework
     * @Date 2020-12-29
     * @Param [lqw]
     * @Return List<SmsSendLogVo>
     */
    @Override
    public List<SmsSendLogVo> listVo(QueryWrapper<SmsSendLog> lqw) {
        return this.baseMapper.listVo(lqw);
    }

    /**
     * @Description 通过查询详情VO 用于返回给前端的列详情接口
     * @Author gpframework
     * @Date 2020-12-29
     * @Param [id]
     * @Return SmsSendLogVo
     */
    @Override
    public SmsSendLogVo getVoById(Long id) {
        return this.baseMapper.getVo(id);
    }

    @Override
    public void saveSmsSendLog(String smsType, String templateCode, String mobile, String content, String sendStatus) {
        SmsSendLog smsSendLog = new SmsSendLog();
        smsSendLog.setSmsType(smsType);
        smsSendLog.setTemplateCode(templateCode);
        smsSendLog.setMobile(mobile);
        smsSendLog.setContent(content);
        smsSendLog.setSendStatus(sendStatus);
        save(smsSendLog);
    }

    @Override
    public boolean sendTodayFlag(String smsType, String mobile, int sendNum) {
        Integer num = this.baseMapper.todaySendCount(smsType, mobile);
        if (num < sendNum) {
            return true;
        }
        return false;
    }
}
